package com.pis.persistence;

import com.pis.model.Medico;
import java.util.List;

import com.pis.model.Paciente;
import com.pis.model.Pessoa;
import com.pis.util.DataBaseConnection;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

public class PacienteDAO implements IPacienteDAO {

    @Override
    public boolean add(Paciente t) {
        String sql = "";
        PessoaDAO pdao = new PessoaDAO();
        pdao.add(t.getPessoa());
        Pessoa p = pdao.getByCpf(t.getPessoa().getCpf());
        sql = "INSERT INTO pis.Paciente (ClassePaciente, CPF) VALUES ('" + t.getClassePaciente() + "', '" + p.getCpf() + "')";
        try {
            if (DataBaseConnection.UpdateDB(sql) > 0) {
                return true;
            }
        } catch (Exception ex) {
            Logger.getLogger(FuncionarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }

    @Override
    public boolean edit(Paciente _new, Paciente _old) {
        String sql="update Paciente set classePaciente='"+_new.getClassePaciente()+"', cpf='"+_new.getPessoa().getCpf()+"' where cpf='"+_old.getPessoa().getCpf()+"'";
                try {
                    System.out.println(sql);
                    if(DataBaseConnection.UpdateDB(sql)>0) return true;
                } catch (Exception ex) {
                    Logger.getLogger(FuncionarioDAO.class.getName()).log(Level.SEVERE, null, ex);
                }
        return false;
    }

    @Override
    public boolean del(Paciente t) {
        String sql = "delete from Paciente where cpf='"+t.getPessoa().getCpf()+"'";
        try {
            if(DataBaseConnection.UpdateDB(sql)>0)return true;
        } catch (Exception ex) {
            Logger.getLogger(MedicoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
		return false;
    }

    @Override
    public List<Paciente> findAll() {
        try {
            String sql  = "select * from Paciente M, Pessoa P where M.cpf=P.cpf";
            ResultSet rs = DataBaseConnection.getQuery(sql);
            ArrayList<Paciente> lista = new ArrayList<Paciente>();
            while(rs.next()){
                Paciente func = new Paciente();
                Pessoa pessoa    = new Pessoa();
                func.setClassePaciente(rs.getString("classePaciente"));
                pessoa.setCpf(rs.getString("cpf"));
                pessoa.setData_nascimento(rs.getString("dataNascimento"));
                pessoa.setNome(rs.getString("nome"));
                pessoa.setTelefone(rs.getString("telefone"));
                func.setPessoa(pessoa);
                lista.add(func);
            }
            return lista;
        } catch (Exception ex) {
            Logger.getLogger(FuncionarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

    @Override
    public Paciente getByID(int id) {
        // TODO Auto-generated method stub
        return null;
    }
    public Paciente getByCPF(String cpf){
        try {
            String sql = "select * from Paciente M, Pessoa P where M.cpf=P.cpf and M.cpf='"+cpf+"'";
            Paciente func = null;
            ResultSet rs = DataBaseConnection.getQuery(sql);
            if(rs.next()){
                func = new Paciente();
                Pessoa pessoa = new Pessoa();
                func.setClassePaciente(rs.getString("classePaciente"));
                pessoa.setCpf(rs.getString("cpf"));
                pessoa.setData_nascimento(rs.getString("dataNascimento"));
                pessoa.setNome(rs.getString("nome"));
                pessoa.setTelefone(rs.getString("telefone"));
                func.setPessoa(pessoa);
            }
            return func;
        } catch (Exception ex) {
            Logger.getLogger(FuncionarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
}
